﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
/*
 * 抽象类： 工程中，某些class去实例化会非常不正常：宠物/动物/植物/几何
 *          1 使用abstract关键词修饰
 *          2 抽象类不可实例化
 * 
 * 抽象方法：
 *          1 使用abstract关键词修饰
 *          2 抽象方法必须在抽象类中
 *          3 继承者必须实现父类的抽象方法，abstract和override必须成对出现
 */

namespace 抽象类和抽象方法
{
    abstract class Pet
    {
        public string name = "";
        abstract public void Shout();
    }
    class Dog : Pet
    {
        override public void Shout()
        {
            Console.WriteLine("Dog");
        }
    }
    internal class Program
    {
        static void Main(string[] args)
        {
            Dog dog = new Dog();

            Pet pet = dog;

            pet.Shout();

            Console.Read();
            
        }
    }
}
